
export function parseTime(time, cFormat) {
  if (time === '' || time === null) {
    return ''
  }
  // 没有定义过滤格式
  if (!cFormat) {
    if ((time + '').length === 13 || (/000$/).test(time)) {
      time = parseInt(time)
      cFormat = '{y}-{m}-{d}'
    }
  }
  time = new Date(time)
  if (arguments.length === 0) {
    return null
  }

  if ((time + '').length === 10) {
    time = +time * 1000
  }

  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    date = new Date(parseInt(time))
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

const that = this
export function geval(str, func1) {
  // console.log('geval', str, func1)
  if (func1 === 'parseTime("{y}-{m}-{d} {h}:{i}:{s}")') {
    return parseTime(str, '{y}-{m}-{d} {h}:{i}:{s}')
  } else if (func1 === 'parseTime("{y}-{m}-{d}")') {
    return parseTime(str, '{y}-{m}-{d}')
  } else {
    // 第一种 成功 但是es5编译报错
    // return evil(func1 + '(' + str + ')')

    // 第二种 失败
    // const Fn = Function // 一个变量指向Function，防止有些前端编译工具报错
    // const now_func = new Fn(func1)()
    // return now_func(str)

    // 第三种
    return that[func1](str)
  }
}

// 表8页- 原因
export function errorMsgFilter(str) {
  const p_str = parseInt(str)
  if (p_str === 0) {
    return '运输费不能为空'
  } else if (p_str === 1) {
    return '没有生成费用'
  } else if (p_str === 2) {
    return '付款方为空，无法获取合同'
  } else if (p_str === 3) {
    return '找不到计费协议'
  } else if (p_str === 4) {
    return '业务单据计费协议时效匹配字段为空'
  } else if (p_str === 5) {
    return '收款方为空，无法获取合同'
  } else if (p_str === 6) {
    return '其他'
  } else {
    return '其他'
  }
}

// 用户管理页-用户状态
export function userStatusFilter(str) {
  const p_str = parseInt(str)
  if (p_str === 1) {
    return '正常'
  } else if (p_str === 0) {
    return '失效'
  }
}

// 小数转百分比
export function numberToPercent(v) {
  if (v === '' || v === null) {
    return ''
  }
  let number = parseFloat(parseFloat(v) * 100).toFixed(2)
  const str = number.split('.')
  if (str.length === 2) {
    if (str[1] === '00') {
      number = str[0]
    }
  }
  return number + '%'
}

// 通用状态
export function statusFilter(str) {
  const p_str = parseInt(str)
  if (p_str === 10) {
    return '正常'
  } else if (p_str === 40) {
    return '禁用'
  } else if (p_str === 50) {
    return '删除'
  }
}

// 车辆详情页-动力类型
export function powerTypeFilter(str) {
  if (str === 'BLADE_ELECTRIC_VEHICLE') {
    return '电动'
  } else if (str === 'HYBRID_ELECTRICAL_VEHICLE') {
    return '混合动力'
  } else if (str === 'GAS_VEHICLE') {
    return '燃油'
  }
}

// 通用状态
export function isHaveFilter(str) {
  const p_str = parseInt(str)
  if (p_str === 0) {
    return '无'
  } else if (p_str === 1) {
    return '有'
  } else {
    return str
  }
}

// 数字单位
export function sumUnitFilter(str) {
  if (str >= 10000) {
    return (str / 10000).toFixed(2) + '万'
  } else {
    return str
  }
}

// 大屏监控页 车辆行驶状态
export function vehicleTravelFilter(str) {
  const p_str = parseInt(str)
  if (p_str === 0) {
    return '正常行驶'
  } else if (p_str === 1) {
    return '故障行驶'
  } else {
    return str
  }
}

// 大屏监控页 车辆 电量状态
export function vehicleTypeFilter(str) {
  const p_str = parseInt(str)
  if (p_str === 10) {
    return '运行'
  } else if (p_str === 20) {
    return '风险'
  } else if (p_str === 30) {
    return '故障'
  } else {
    return str
  }
}

// 通用  检测 字段是否有值, 则返回 空字符串， 防止显示 undefined
export function isHaveDataFilter(str) {
  if (str || str === 0) {
    return str
  } else {
    return ''
  }
}

// 通用  百分比 数值, 返回百分比
export function numToPercentageFilter(str) {
  if (str === 0) {
    return '0'
  } else if (str === 1) {
    return 100
  } else if (str > 0 && str < 1) {
    return (str * 100).toFixed(2)
  }
}
